<?php
// L3 MIAGE Nice - Gestion de projets et Analyse des besoins - 2010-2011
// Création d'un site internet de vente de vidéos en ligne
// 
// class_mysql.php - Classe permettant la connection à une base de données MySQL
//   Design pattern Factory (classe fille)
// 
// Auteur : (groupe 15) Shyn-Yuan CHENG, Abdoul Mazid DIALLO, LAGNEAU Sébastien, NJOTCHA-NJOTCHA Franck-Merlin
// 

class mysql extends dbfactory {

   protected $default_cfg = array(
   'host' => DBHOST,
   'user' => DBUSER,
   'passwd' => DBPASS,
   'name' => DBNAME);

   // Connection à la base de données
   //
   protected function connect () {
      // Connection au SGBD
      //
      $this->_config['link'] = @mysql_connect($this->_config['host'], $this->_config['user'], $this->_config['passwd']);
      if (!$this->_config['link'] ) {
         throw new Exception('Erreur lors de la connection vers : '.$this->_config['host'].'.');
      }
      
      // Sélection de la base de données
      //
      $this->_config['base'] = @mysql_select_db($this->_config['name'], $this->_config['link']);
      if (!$this->_config['base'] ) {
         throw new Exception('Erreur lors de l\'ouverture de la base de donnée : '.$this->_config['name'].'.');
         unset($this->_config);
      }
   }

   // Fermeture de la base de données au moment de la destruction de la classe.
   //
   public function __destruct() { mysql_close($this->_config['link']); }

   // Création d'une requête
   //
   public function query ($sql) {
      // Enregistre la ressource de résultat de la requête dans l'attribut de classe correspondant
      //
      $this->query = @mysql_query ($sql, $this->_config['link'] );
      
      // Retourner la ressource ou l'erreur suivant le cas
      //
      if ($this->query) return $this->query;
      else {
         throw new Exception (mysql_error());
         return false;
      }
   }

   // Récupère le résultat d'une requête dans un objet
   //
   public function fetch_object () {
      // Retourner le résultat de la requête sous forme d'objet
      //
      return mysql_fetch_object ($this->query);
   }

   // Compte le nombre de tuples dans le résultat de la requete
   //
   public function num_rows () {
      // Retourner me résultat de la requête sous forme d'objet
      //
      return mysql_num_rows ($this->query);
   }
   
   public function free() {
      return mysql_free_result ($this->query);
   }
}
?>